// 引入数据库驱动模块
const mysql = require("mysql");
// 连接数据库的配置
const pool = mysql.createPool({
    host:"localhost",// 主机名称，一般是本机
    port: 3307,// 端口号
    user:"root",// 创建数据库时设置用户名
    password:"123456",// 创建数据库时设置的密码
    database:"xin_mes_node", // 创建的数据库
    connectionLimit: 20, // 连接池最大连接数
    multipleStatements: true, // 允许执行多条sql语句
    dateStrings: true, // 将日期格式转为字符串    
});
/**
 * 封装查询数据库的方法
 * @param str {string} 描述请求日志
 * @param sql {string} sql语句
 * @param arr {any} 参数数组
 * @param callback {function} 回调函数
 */
function query(str,sql,arr,callback){
    if(arr.constructor === Array){
        pool.getConnection(function(err,connection){
            if (err) {
                console.log(`数据库连接失败:*********${str}*********${err.message}`);
            }else{
                console.log(`数据库连接成功*********${str}*********`);
                connection.query(sql,[arr], function (err,rows) {
                    callback(err,rows); // 结果回调
                    //释放连接资源 ，跟 connection.destroy() 不同，它是销毁
                    connection.release();
                });
            }
        });
    }else{
        pool.getConnection(function(err,connection){
            if (err) {
                console.log(`数据库连接失败:*********${str}*********${err.message}`);
            }else{
                console.log(`数据库连接成功*********${str}*********`);
                connection.query(sql, function (err,rows) {
                    arr(err,rows); // 结果回调
                    //释放连接资源 ，跟 connection.destroy() 不同，它是销毁
                    connection.release();
                });
            }
        });
    }
    
}

// 暴露 
exports.query = query;
